home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 129 / CD Gamer Issue 129 (December 2003) (Disc 1).ISO / Addons / Vietcong Map editor / max plugins / scripts / pteroTools / _collisionsRollOut.msp < prev    next >
Encoding:
Text File  |  2003-09-12  |  6.0 KB  |  114 lines

  1. rollout CollisionsRollOut "Collisions" rolledUp:true (
  2.     local _name
  3.     local _RollOut
  4.  
  5.     ---------------------------------------------------------------
  6.     -- init GUI
  7.     ---------------------------------------------------------------
  8.     include "$scripts\\pteroTools\\_propGroupUI.ms"
  9.         checkbox        cbxWPObst    "Way Points Obstacle"                                                            align:#left
  10.         dropdownlist    drpDefMat    "Default Material:"                                width:144        height:20        align:#center        
  11.         dropdownlist    drpColShp    "Shape for Player/AI:"                            width:144        height:10        align:#center        
  12.         dropdownlist    drpMslShp    "Shape for Missiles:"                            width:144        height:7        align:#center
  13.  
  14.      ---------------------------------------------------------------
  15.     -- Init RollOut
  16.     ---------------------------------------------------------------
  17.      fn fnKeyNames    = #( "Phy_WPObstacle", "Phy_defmat", "Phy_colshp", "Phy_misshp" )
  18.      fn fnKeyUI        = #( #( cbxWPObst ), #( drpDefMat ), #( drpColShp ), #( drpMslShp ) )
  19.      fn fnKeyDef        = #( #( 0 ), #( "- " ), #( -1 ), #( -1 ) )
  20.     fn fnName        = "Collisions"
  21.     fn fnRollOut    = CollisionsRollOut
  22.     fn fnInitRollOut = (
  23.         local _name        = fnName()
  24.         local _RollOut    = fnRollOut()
  25.         fnAppendRollOut _RollOut _name
  26.     )
  27.      
  28.      ---------------------------------------------------------------
  29.     -- fnApply()
  30.     ---------------------------------------------------------------
  31.     fn fnApply obj keyIDX read write del acq acqObj def sav = (
  32.         local keyNames    = fnKeyNames()
  33.         local keyUI        = fnKeyUI()
  34.         local keyDef    = fnKeyDef()
  35.         local keyArray    = #()
  36.  
  37.         fn fnFindMat val keyUI:keyUI keyIDX:keyIDX =                                                             ---- FN FIND MATERIAL
  38.             for n = 1 to (keyUI[keyIDX][1].items).count do
  39.                 if (subString keyUI[keyIDX][1].items[n] 1 2) == val do return n
  40.                 
  41.         if sav do                                                                                                 ---- SAVE DEFAULT
  42.             try (
  43.                 if keyIDX == 1 do keyDef[keyIDX][1] = if keyUI[keyIDX][1].checked then 1 else 0
  44.                 if keyIDX == 2 do keyDef[keyIDX][1] = substring keyUI[keyIDX][1].selected 1 2
  45.                 if keyIDX >= 3 do keyDef[keyIDX][1] = keyUI[keyIDX][1].selection - 2
  46.                 fnSetDefs ( keyNames[keyIDX] as string ) ( keyDef[keyIDX] as string )
  47.                 return true
  48.             ) catch ( print ( "Error: " + _name + ".fnApply() - save" ); return false )
  49.  
  50.         if del do fnDeleteProp obj keyNames[keyIDX]                                                                ---- DELETE
  51.         
  52.         keyArray = if acq then fnReadProp acqObj keyNames[keyIDX] else fnReadProp obj keyNames[keyIDX]            ---- ACQUIRE
  53.         
  54.         if read or del or def or acq do (                                                                        ---- READ
  55.             if ( keyArray[_firstValue] == "" ) or ( keyArray[_firstValue] as string == "undefined" ) or def then 
  56.                 try (
  57.                     if def then keyDef[keyIDX] = fnGetDefs keyNames[keyIDX]
  58.                     if keyIDX == 1 do keyUI[keyIDX][1].checked        = if keyDef[keyIDX][1] == 1 then true else false
  59.                     if keyIDX == 2 do keyUI[keyIDX][1].selection    = fnFindMat keyDef[keyIDX][1]
  60.                     if keyIDX >= 3 do keyUI[keyIDX][1].selection    = keyDef[keyIDX][1] + 2
  61.                 ) catch ( print ( "Error: " + _name + ".fnApply() - read - default" ); return false )
  62.             else 
  63.                 try (
  64.                     if keyIDX == 1 do keyUI[keyIDX][1].checked        = if keyArray[_firstValue] == "1" then true else false
  65.                     if keyIDX == 2 do keyUI[keyIDX][1].selection    = fnFindMat keyArray[_firstValue]
  66.                     if keyIDX >= 3 do keyUI[keyIDX][1].selection    = keyArray[_firstValue] as integer + 2
  67.                 ) catch ( print ( "Error: " + _name + ".fnApply() - read - properties" ); return false )
  68.             
  69.             if read or del do return true
  70.         )
  71.  
  72.         if write do                                                                                             ---- WRITE
  73.             try (
  74.                 keyArray[_keyName] = keyNames[keyIDX]
  75.                 if keyIDX == 1 do if keyUI[keyIDX][1].checked == false        then del = true else keyArray[_firstValue] = "1"
  76.                 if keyIDX == 2 do if keyUI[keyIDX][1].selection == 1        then del = true else keyArray[_firstValue] = substring keyUI[keyIDX][1].selected 1 2
  77.                 if keyIDX >= 3 do if keyUI[keyIDX][1].selection == 1        then del = true else keyArray[_firstValue] = ( keyUI[keyIDX][1].selection - 2 ) as string
  78.  
  79.                 if del then fnDeleteProp obj keyNames[keyIDX] else fnWriteprop obj keyArray
  80.                 return true
  81.             ) catch ( print ( "Error: " + _name + ".fnApply() - write" ); return false )
  82.     )
  83.     
  84.      ---------------------------------------------------------------
  85.     -- fnUpdate()
  86.     ---------------------------------------------------------------
  87.     fn fnUpdate keyIDX:1 read:false write:false del:false acq:false acqObj:undefined def:false sav:false = (
  88.         if not write do write = btnAuto.checked
  89.         for obj in selection do fnApply obj keyIDX read write del acq acqObj def sav
  90.     )
  91.  
  92.     ---------------------------------------------------------------
  93.     -- Event Handler
  94.     ---------------------------------------------------------------
  95.     on cbxWPobst            changed state    do ( fnUpdate keyIDX:1; fnGetPropsToShow(); fnPrintLabel() )
  96.     on drpDefMat            selected item    do ( fnUpdate keyIDX:2; fnGetPropsToShow(); fnPrintLabel() )
  97.     on drpColShp            selected item    do ( fnUpdate keyIDX:3; fnGetPropsToShow(); fnPrintLabel() )
  98.     on drpMslShp            selected item    do ( fnUpdate keyIDX:4; fnGetPropsToShow(); fnPrintLabel() )
  99.     on btnSet                pressed            do ( for n = 1 to (fnKeyNames()).count do fnUpdate keyIDX:n write:true; fnGetPropsToShow(); fnPrintLabel() )
  100.     on btnDef                pressed            do ( for n = 1 to (fnKeyNames()).count do fnUpdate keyIDX:n def:true; fnGetPropsToShow(); fnPrintLabel() )
  101.     on btnSav                pressed            do ( for n = 1 to (fnKeyNames()).count do fnUpdate keyIDX:n sav:true; fnGetPropsToShow(); fnPrintLabel() )
  102.     on btnDel                pressed            do ( for n = 1 to (fnKeyNames()).count do fnUpdate keyIDX:n del:true; fnGetPropsToShow(); fnPrintLabel() )
  103.     on btnAcq                changed state    do ( fnAcquire _RollOut keys:((fnKeyNames()).count); fnGetPropsToShow(); fnPrintLabel() )
  104.     on CollisionsRollOut    open            do (
  105.         _RollOut            = fnRollOut()
  106.         _name                = fnName()
  107.         drpDefMat.items        = fnLoadMats()
  108.         drpColShp.items        = #("- None -", "Linked", "Bounding Box", "Render Faces", "Bounding Sphere", "Crazy Bounding Sphere", "Point", "Crazy point")
  109.         drpMslShp.items        = #("- None -", "Linked", "Bounding Box", "Render Faces", "Bounding Sphere")
  110.         fnOpenRollOut _RollOut keys:((fnKeyNames()).count)
  111.     )
  112.     on CollisionsRollOut    close            do fnCloseRollOut _RollOut
  113. )
  114.